// 1. 给窗口添加背景色
// 2. 给按钮加上三种状态下的图片
// 纯代码的要记好多api, 还是建议用设计器来做
package main

import (
	_ "embed"
	"fmt"

	app "gitee.com/go_888/xcgui/xcgui/app"
	imagex "gitee.com/go_888/xcgui/xcgui/imagex"
	widget "gitee.com/go_888/xcgui/xcgui/widget"
	window "gitee.com/go_888/xcgui/xcgui/window"
	xc "gitee.com/go_888/xcgui/xcgui/xc"
	xcc "gitee.com/go_888/xcgui/xcgui/xcc"
)

var (
	//go:embed res/button_min.png
	img1 []byte
	//go:embed res/button_close.png
	img2 []byte
)

func main() {
	// 1.初始化UI库
	a := app.X创建(true)
	a.X启用DPI(true)
	a.X启用自动DPI(true)
	// 2.创建窗口
	w := window.X创建窗口(0, 0, 465, 300, "", 0, xcc.X窗口样式_简单|xcc.X窗口样式_标题|xcc.X窗口样式_拖动窗口)
	// 设置窗口透明类型
	w.X设置透明类型(xcc.X窗口透明标识_阴影窗口)
	// 设置窗口阴影
	w.X设置阴影信息(8, 255, 10, false, 0)
	// 给整个窗口添加背景色
	w.X添加背景填充(xcc.X窗口状态_整个窗口, xc.RGBA颜色(51, 57, 60, 254))

	// 创建最小化按钮
	btnMin := widget.X创建按钮(397, 8, 30, 30, "", w.X句柄)
	btnMin.X设置类型EX(xcc.X对象扩展类型_最小化按钮)

	// 创建关闭按钮
	btnClose := widget.X创建按钮(427, 8, 30, 30, "", w.X句柄)
	btnClose.X设置类型EX(xcc.X对象扩展类型_关闭按钮)

	// 给按钮加上三种状态下的图片
	setBtnImg(btnMin, img1)
	setBtnImg(btnClose, img2)

	// 3.显示窗口
	w.X显示方式(xcc.SW_SHOW)
	// 4.运行程序
	a.X运行()
	// 5.释放UI库
	a.X退出()
}

// 给按钮加上三态图片
func setBtnImg(btn *widget.X结构_按钮, file []byte) {
	for i := int32(0); i < 3; i++ {
		x := i * 31
		// 图片_加载从内存, 指定区域位置及大小
		img := imagex.X创建并按内存且指定区域(file, x, 0, 30, 30)

		if img.X句柄 == 0 {
			fmt.Println("Error: hImg=", img.X句柄)
			continue
		}

		// 启用图片透明色
		img.X启用透明色(true)
		// 添加背景图片
		switch i {
		case 0:
			btn.X添加背景图片(xcc.X组合状态_按钮_鼠标离开, img.X句柄)
		case 1:
			btn.X添加背景图片(xcc.X组合状态_按钮_鼠标停留, img.X句柄)
		case 2:
			btn.X添加背景图片(xcc.X组合状态_按钮_鼠标按下, img.X句柄)
		}
		// 启用按钮背景透明
		btn.X启用背景透明(true)
	}
}
